package com.promise.jokerdream.response.parser

import com.promise.jokerdream.response.phone.FightKnightArenaXmlResponse
import org.jsoup.Jsoup

/**
 * 侠士论剑挑战XML解析器
 * 专门用于解析大乐斗侠士论剑挑战相关的XML数据
 * 基于Jsoup实现
 */
class FightKnightArenaXmlParser: BaseXmlParser<FightKnightArenaXmlResponse>() {
    
    /**
     * 解析侠士论剑挑战XML数据
     * @param xmlString XML字符串
     * @return 解析结果
     */
    fun parseFightKnightArenaXml(xmlString: String): XmlParseResult<FightKnightArenaXmlResponse> {
        return parseXml(xmlString)
    }
    
    /**
     * 实现基类的具体解析逻辑
     * 提取div#id下p标签中第一个和第二个br之间的内容
     * @param xmlString XML字符串
     * @return 侠士论剑挑战结果
     */
    override fun doParse(xmlString: String): FightKnightArenaXmlResponse {
        val doc = Jsoup.parse(xmlString)
        
        // 查找div#id下的p标签
        val pElement = doc.select("div#id p").first()
        
        if (pElement != null) {
            val html = pElement.html()
            
            // 直接使用<br/>进行分割，与其他解析器保持一致
            val parts = html.split(Regex("<br\\s*/?>"))
            
            // 取第一个和第二个<br/>中间的文案（索引1）
            if (parts.size >= 2) {
                val content = parts[1].trim()
                // 移除HTML标签，只保留文本
                val doc = Jsoup.parse(content)
                val extractedContent = doc.text().trim()
                return FightKnightArenaXmlResponse(
                    actionResult = extractedContent
                )
            }
        }
        
        // 如果没有找到匹配的内容，返回原始XML
        return FightKnightArenaXmlResponse(
            actionResult = doc.text()
        )
    }
}